﻿using YAPACS.RisServer.Services.Dtos;
using YAPACS.Workflows;

namespace YAPACS.RisServer.Abstractions;

public interface ITechnicianService
{
    /// <summary>
    /// 快速查询检查列表
    /// </summary>
    /// <param name="filterId"></param>
    /// <param name="take"></param>
    /// <param name="skip"></param>
    /// <param name="searchValue"></param>
    /// <returns></returns>
    Task<WorkflowOutput> GetExamListByFilterAsync(DataGridRequest request);
    /// <summary>
    /// 获取高级查询视图
    /// </summary>
    /// <returns></returns>
    Task<WorkflowOutput> GetAdvancedSearchViewAsync();
    /// <summary>
    /// 浏览申请单
    /// </summary>
    /// <param name="examId"></param>
    /// <returns></returns>
    Task<WorkflowOutput> OpenExamAsync(Guid examId);
    /// <summary>
    /// 查看患者信息
    /// </summary>
    /// <param name="examId"></param>
    /// <returns></returns>
    Task<WorkflowOutput> ViewApplyAsync(Guid examId);
    /// <summary>
    /// 更换设备
    /// </summary>
    /// <param name="examId"></param>
    /// <param name="deviceId"></param>
    /// <returns></returns>
    Task<WorkflowOutput> ChangeDeviceAsync(Guid examId, Guid deviceId);
    /// <summary>
    /// 呼叫下一位
    /// </summary>
    /// <returns></returns>
    Task<WorkflowOutput> CallNextAsync();
    /// <summary>
    /// 呼叫患者（具体患者）
    /// </summary>
    /// <param name="examId"></param>
    /// <returns></returns>
    Task<WorkflowOutput> CallAsync(Guid examId);
    /// <summary>
    /// 开始检查
    /// </summary>
    /// <param name="examId"></param>
    /// <returns></returns>
    Task<WorkflowOutput> StartAsync(Guid examId);
    /// <summary>
    /// 结束检查
    /// </summary>
    /// <param name="examId"></param>
    /// <returns></returns>
    Task<WorkflowOutput> CompletedAsync(Guid examId);
    /// <summary>
    /// 检查参数记录
    /// </summary>
    /// <param name="examId"></param>
    /// <returns></returns>
    Task<WorkflowOutput> CheckParameterRecordAsync(Guid examId);
    /// <summary>
    /// 紧急登记
    /// </summary>
    /// <returns></returns>
    Task<WorkflowOutput> EmergencyRegisterAsync();
    /// <summary>
    /// 其他操作
    /// </summary>
    /// <returns></returns>
    Task<WorkflowOutput> GetToolBarExtensionAsync();
    /// <summary>
    /// 重新检查
    /// </summary>
    /// <param name="examId"></param>
    /// <returns></returns>
    Task<WorkflowOutput> RecheckAsync(Guid examId);
    /// <summary>
    /// 取消检查
    /// </summary>
    /// <param name="input"></param>
    /// <param name="nextApi"></param>
    /// <returns></returns>
    Task<WorkflowOutput> CancelExamAsync(WorkflowInput input, string nextApi = null);
    /// <summary>
    /// 过号
    /// </summary>
    /// <param name="examId"></param>
    /// <returns></returns>
    Task<WorkflowOutput> PassAsync(Guid examId);
    Task<WorkflowOutput> ExportAsync(DataGridRequest request);
}
